/*****************************************
**  Nom : COLLOMB - SALINAS - CARRUELLE **
**	Nom du fichier : strut.h			**
**	Description : Regroupe toutes les   **
**                structures de chaque  **
**				  fichier				**
**										**							
**	Date : 14/08/2014				    **
**  Statut : In Work					**
*****************************************/

/*****************************************
**  Zone de declaration des includes    **
*****************************************/

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <signal.h>
#include <sys/msg.h>
#include <sys/sem.h>
#include <termios.h>
 
 

/*****************************************
**  Zone de declaration des constantes  **
*****************************************/

 #define MAXSIZE 20
 #define TRUE 1
 #define FALSE 0
 #define NUMERO_PREMIER_JOUEUR 1		
 #define NOMBRE_SIGNE 4
 #define NOMBRE_CARTE 13
 #define NOMBRE_JOUEUR_MAX 10
 #define NOMBRE_JOUEUR 4
 #define NOMBRE_CARTE_PAR_JOUEUR 13
 #define Fic_Regles "Regles"
 #define Fic_Faits "Faits"		
 #define LAST_CARDS 3
 #define SEPARATEUR "*"



/*****************************************
**  Zone de declaration des structures  **
*****************************************/

 typedef struct CONDITION
 {
	 char cond[MAXSIZE];
	 int valid;
	 struct CONDITION *suiv; 
 } ST_COND;

 typedef struct FAITS
 {
	 char fait[MAXSIZE];
	 struct FAITS *suiv; 
 } ST_FAITS;

 typedef struct RESULTAT
 {
	 char res[MAXSIZE];
	 int valid;
	 int nb_cond;
	 int nb_cond_valid;
	 ST_COND* TeteListCond;
	 struct RESULTAT *suiv;
 } ST_RES;
 
 typedef struct S_CARTE
 {
	 int valeur;	//valeur de la carte de 1(as) a 13(roi)
	 int signe; //1=coeur;2=carreau;3=pique;4=trefle
	 struct S_CARTE *carte_suivante;
 }S_CARTE;

 typedef struct fifo_paquet 
 {
	 int nom_joueur; //proprietaire
	 int nb_carte; //nombre de carte contenu dans le paquet
	 struct S_CARTE *carte_in; //lien vers carte au-dessus du paquet
	 struct S_CARTE *carte_out; //lien vers carte du-dessous du paquet
 }FIFO_PAQUET;

 typedef struct CAST
 {
 	 ST_FAITS* Tete_Faits;
 	 ST_RES* Tete_Res;
 } ST_SEG;
 
 
 #include "CreerListeCh.h"
 #include "ChngAvt.h"
 #include "ChainArr.h"
 #include "InitPartie.h"
 #include "DrlmntPartie.h"
 #include "DetectionTouche.h"
 
